#include "mainwindow.h"
#include "ui_mainwindow.h"

void MainWindow::sql_init()
{
    // 1、连接数据库
    db = QSqlDatabase::addDatabase("QSQLITE"); // 使用 SQLite 驱动
    db.setDatabaseName("hqyj.db");            // 设置数据库文件路径
    if (!db.open()) {
        qDebug() << "数据库打开失败!" << db.lastError().text();
        return;
    }
    qDebug() << "数据库打开成功!";

    // 初始化查询对象
    query = QSqlQuery(db);

    // 2、创建数据表
    if (!query.exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, user TEXT, password TEXT)")) {
        qDebug() << "创建表格失败" << query.lastError().text();
        return;
     }
     qDebug() << "数据表创建成功!";
}

// 登录
void MainWindow::on_log_in_Button_clicked()
{
    // 执行查询
    if (!query.exec("SELECT * FROM users")) {
        qDebug() << "查询失败!" << query.lastError().text();
        return;
    }

    // 遍历数据表 查询账号密码是否正确
    while (query.next()) {
        int id = query.value("id").toInt();
        QString user = query.value("user").toString();
        QString password = query.value("password").toString();
        qDebug() << "ID:" << id << ", user:" << user << ", password:" << password;

        if(user == ui->userlineEdit->text() && password == ui->passwordlineEdit->text())
        {
            qDebug() << "登录成功";
            QMessageBox::information( this , "登录成功" , "欢迎回家!!!" );
            emit log_in_yes(user);
            return ;
        }
    }
    QMessageBox::question(this , "登录失败" , "账号或密码错误" , QMessageBox::Ok);
}

// 注册
void MainWindow::on_regButton_clicked()
{
    // 获取用户输入
    QString user = ui->userlineEdit->text();
    QString password = ui->passwordlineEdit->text();


    // 执行查询
    if (!query.exec("SELECT * FROM users")) {
        qDebug() << "查询失败!" << query.lastError().text();
        return;
    }

    // 遍历数据表 查询账号是否重名
    while (query.next()) {
        int id = query.value("id").toInt();
        QString user = query.value("user").toString();

        // QString password = query.value("password").toString();
        // qDebug() << "ID:" << id << ", user:" << user << ", password:" << password;
        //  && password == ui->passwordlineEdit->text()
        if(user == ui->userlineEdit->text())
        {
            qDebug() << "已有重名用户";
            QMessageBox::information( this , "注册错误" , "已有重名用户 , 请重新填写 " );
            return ;
        }
    }

    // 无重名用户
    // 准备 SQL 插入语句
    query.prepare("INSERT INTO users (user, password) VALUES (:user, :password)");
    query.bindValue(":user", user);
    query.bindValue(":password", password);

    // 执行插入操作
    if (!query.exec()) {
        qDebug() << "插入失败!" << query.lastError().text();
        return;
    }
    qDebug() << "数据插入成功!";
    QMessageBox::information( this , "注册成功" , "恭喜你！！！" );
}
